package com.ushine.design.design.a_creative_mode.a_simple_factory.a_principle;

/**
 * Product（抽象产品角色）
 *
 * @author yls
 */
public abstract class Product {

    /**
     * 所有产品类的公共业务方法
     */
    public void methodSame() {
        //公共业务方法
        System.out.println("都是简单工厂的继承者。");
    }

    /**
     * 声明抽象方法、
     */
    public abstract void methodDiff();


    /**
     * 抽象产品和工厂类合并
     * 静态工厂方法
     */
    public static Product getProduct(String arg) {
        Product product = null;
        if (Constant.A.equalsIgnoreCase(arg)) {
            product = new ConcreteProductA();
        } else if (Constant.B.equalsIgnoreCase(arg)) {
            product = new ConcreteProductB();
        }
        return product;
    }
}


